// 懂思路才写代码，而不是背代码。



// 看不懂代码的话，看思路，然后去控制台看执行顺序以及输出结果。

function getTwoOddNumber (arr){
    let eor = 0, eor2 = 0;
    for(let i of arr){
        eor ^= i;
    }
    // console.log(eor, 7 ^ 9);
    // eor = a ^ b; 两个奇数
    let rightOne = eor & (~eor + 1);
    for(let i of arr){
        // 偶数项也有与rightOne异或等于1的时候，但是都是偶次。最终变成 0 
        // 只有奇数才会保留。只会保留 a 或者 b 其中一个。
        if((rightOne & i) == 1){
            eor2 ^= i;
        }
    }
    return [eor2, eor ^ eor2];
}

console.log(getTwoOddNumber([2,4]));